Declarations are constructs that, upon execution, bind a name to a value (object-declaration), to a declarer (type-declaration) or to a routine (procedure-declaration, operator-declaration).
Apart from this dynamic effect they have a static effect. The occurrence of a declaration makes the name, defined by it, visible in a specific part of the program, the scope of the declaration, together with the type and access attributes with which it is defined.